package com.ray.auth.system.service;

import java.util.List;

import org.springframework.stereotype.Service;

import com.ray.auth.system.table.entity.DictType;
import com.zjhc.flyhong.common.datastructure.TreeNode;
import com.zjhc.flyhong.common.function.operator.LoginUser;
import com.zjhc.flyhong.common.function.operator.PageDto;
import com.zjhc.flyhong.common.web.Result;

/**
 * <h1>字典类型服务  服务接口</h1>
 * @创建人 ray
 * @创建时间 2017-06-10
 * @版本 1.0
 * @重要修改备注 
 * 
 */
@Service
public interface DictTypeService {
	/***
	 * @描述 <h1>添加字典类型</h1><br/>数据库操作信息从  Operater对象中获取.
	 * @参数 entity 字典类型对象
	 * @参数 operater 操作人信息
	 * @异常    内部捕获异常
	 * @事物    异常=>事物进行回滚
	 * @返回 result  返回结果  result.status => 0表示成功 ,其余表示失败
	 */
	public Result<Object> saveDictType(DictType entity, LoginUser loginUser);
    /**
     * 通过父节点获取字典类型资源
     * @param id 父节点
     * @param loginUser 登录用户
     * @return
     */
	public List<TreeNode> queryDictTypeListByParentId(String id, Integer level,LoginUser loginUser);
	/**
	 * 查询所有从字典类型
	 * @param params 查询参数
	 * @param page 分页信息
	 * @param loginUser 登录用户
	 * @return
	 */
	public PageDto<DictType> queryDictTypeList(DictType params, PageDto<DictType> page, LoginUser loginUser);
    /**
     * 逻辑删除 字典类型数据
     * @param id 字典类型编号
     * @param loginUser 登录用户
     * @return
     */
	public Result<Object> deleteDictType(String id, LoginUser loginUser);
    /**
     * 通过ID查询字典类型信息
     * @param id 类型编号
     * @param loginUser 登录用户
     * @return
     */
	public DictType queryDictType(String id, LoginUser user);
    /**
     * 修改字典类型信息
     * @param record 字典类型对象
     * @param user 登录用户
     * @return
     */
	public Result<Object> updateDictType(DictType record, LoginUser user);
    /**
     * 通过父节点id获取父节点信息 提供符节点ID 0 返回虚拟节点
     * @param patentDictTypeId
     * @param user
     * @return
     */
	public DictType queryParentDictType(String patentTypeId, LoginUser user);
    
}
